<template>
	<view>
		<view class="goods-list">
			<view v-for="(item, i) in goodsList" :key="i" @click="gotoDetail(item)">
				<my-goods :goods="item"></my-goods>
			</view>
		</view>
	</view>
</template>

<script>
import { getGoodsList } from '@/api/goods.js';
// import myGoods from '@/components/my-goods/my-goods.vue'
export default {
	// components:{
	// 	myGoods
	// },
	data() {
		return {
			// 请求参数对象
			queryObj: {
				// 查询关键词
				query: '',
				// 商品分类Id
				cid: '',
				// 页码值
				pagenum: 1,
				// 每页显示多少条数据
				pagesize: 10
			},
			// 商品列表的数据
			goodsList: [],
			// 总数量，用来实现分页
			total: 0,
			// 是否正在请求数据
			isloading: false
		};
	},
	onLoad(options) {
		// 将页面参数转存到 this.queryObj 对象中
		this.queryObj.query = options.query || '';
		this.queryObj.cid = options.cid || '';
		// 调用获取商品列表数据的方法
		this.getGoodsList();
	},
	onReachBottom(){
		// 判断是否还有下一页数据
		if (this.queryObj.pagenum * this.queryObj.pagesize >= this.total) return uni.$showMsg('数据加载完毕！')
		this.getGoodsList()
	},
	// 下拉刷新的事件
	onPullDownRefresh() {
	  // 1. 重置关键数据
	  this.queryObj.pagenum = 1
	  this.total = 0
	  this.isloading = false
	  this.goodsList = []
	
	  // 2. 重新发起请求
	  this.getGoodsList(() => uni.stopPullDownRefresh())
	},
	methods: {
		async getGoodsList(callback) {
			if ( this.isloading ){
				return false
			}
			this.isloading = true
			const { data: res } = await getGoodsList(this.queryObj);
			// 只要数据请求完毕，就立即按需调用 cb 回调函数
			callback && callback()
			this.isloading = false
			this.queryObj.pagenum += 1 // 让页面添加一页
			this.total = res.message.total;
			// this.goodsList.push(...res.message.goods)
			this.goodsList = [...this.goodsList,...res.message.goods]
			
			console.log(res);
		},
		gotoDetail(item){
			uni.navigateTo({
				url:'/subpkg/goods_detail/goods_detail?goods_id='+item.goods_id
			})
		}
	}
};
</script>

<style lang="scss">	
</style>
